--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / about / AboutPage.vue
Displaying Raw • Download
meshchatx/src/frontend/components/about/AboutPage.vue v3.2.0 (c5deab07) Text, 42.62 KB
Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex flex-col flex-1 overflow-hidden min-w-0 bg-gradient-to-br from-slate-50 via-slate-100 to-white dark:from-zinc-950 dark:via-zinc-900 dark:to-zinc-900"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 overflow-y-auto w-full px-4 md:px-8 py-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-4 w-full max-w-6xl mx-auto"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3appInfoTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-4 md:flex-row md:items-center"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs uppercase tracking-wide text-gray-500 dark:text-gray-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-3xl font-semibold text-gray-900 dark:text-white"Tb4b4b4>Reticulum MeshChatXTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-gray-300"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.version"Tb4b4b4, Tb4b4b4{ Te6edf3versionTff7b72: Te6edf3appInfoTb4b4b4.Te6edf3version Tb4b4b4}Tb4b4b4) Tff7b72}} •
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.rns_version"Tb4b4b4, Tb4b4b4{ Te6edf3versionTff7b72: Te6edf3appInfoTb4b4b4.Te6edf3rns_version Tb4b4b4}Tb4b4b4) Tff7b72}} •
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.lxmf_version"Tb4b4b4, Tb4b4b4{ Te6edf3versionTff7b72: Te6edf3appInfoTb4b4b4.Te6edf3lxmf_version Tb4b4b4}Tb4b4b4) Tff7b72}} •
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.python_version"Tb4b4b4, Tb4b4b4{ Te6edf3versionTff7b72: Te6edf3appInfoTb4b4b4.Te6edf3python_version Tb4b4b4}Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isElectronTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex flex-col sm:flex-row gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip px-4 py-2 text-sm justify-center"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3relaunchTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"restart" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.restart_app"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid gap-3 sm:grid-cols-3 mt-4 text-sm text-gray-700 dark:text-gray-300"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.config_path"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"monospace-field break-all"Tb4b4b4>Tff7b72{{ Te6edf3appInfoTb4b4b4.Te6edf3reticulum_config_path Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isElectronTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip mt-2 text-xs"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showReticulumConfigFileTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"folder" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.reveal"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.database_path"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"monospace-field break-all"Tb4b4b4>Tff7b72{{ Te6edf3appInfoTb4b4b4.Te6edf3database_path Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isElectronTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip mt-2 text-xs"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showDatabaseFileTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"database" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.reveal"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.database_size"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{
Te6edf3formatBytesTb4b4b4(
Te6edf3appInfoTb4b4b4.Te6edf3database_files
Tff7b72? Te6edf3appInfoTb4b4b4.Te6edf3database_filesTb4b4b4.Te6edf3total_bytes
Tff7b72: Te6edf3appInfoTb4b4b4.Te6edf3database_file_size
Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3appInfoTb4b4b4.Te6edf3database_filesTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400"Tb4b4b4>
Main Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3database_filesTb4b4b4.Te6edf3main_bytesTb4b4b4) Tff7b72}} • WAL
Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3database_filesTb4b4b4.Te6edf3wal_bytesTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-2 md:flex-row md:items-center md:justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.database_health"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-gray-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.database_health_description"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-3 py-2 text-xs"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3databaseActionInProgress Tff7b72|| Te6edf3healthLoadingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3getDatabaseHealthTb4b4b4(Tff7b72trueTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"refresh" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.refresh"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-3 py-2 text-xs"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3databaseActionInProgress Tff7b72|| Te6edf3healthLoadingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3vacuumDatabaseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"broom" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.vacuum"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip px-3 py-2 text-xs"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3databaseActionInProgress Tff7b72|| Te6edf3healthLoadingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3recoverDatabaseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"shield-sync" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.auto_recover"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3databaseActionMessageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-600"Tb4b4b4>Tff7b72{{ Te6edf3databaseActionMessage Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3databaseActionErrorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-red-600"Tb4b4b4>Tff7b72{{ Te6edf3databaseActionError Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3healthLoadingTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-gray-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.running_checks"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3databaseHealthTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"grid gap-3 sm:grid-cols-3 text-sm text-gray-700 dark:text-gray-300"
Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.integrity"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3databaseHealthTb4b4b4.Te6edf3quick_check Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.journal_mode"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3databaseHealthTb4b4b4.Te6edf3journal_mode Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.wal_autocheckpoint"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>
Tff7b72{{
Te6edf3databaseHealthTb4b4b4.Te6edf3wal_autocheckpoint Tff7b72!== Tff7b72null Tff7b72&&
Te6edf3databaseHealthTb4b4b4.Te6edf3wal_autocheckpoint Tff7b72!== Tff7b72undefined
Tff7b72? Te6edf3databaseHealthTb4b4b4.Te6edf3wal_autocheckpoint
Tff7b72: Ta5d6ff"—"
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.page_size"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3databaseHealthTb4b4b4.Te6edf3page_sizeTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.pages_free"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>
Tff7b72{{ Te6edf3formatNumberTb4b4b4(Te6edf3databaseHealthTb4b4b4.Te6edf3page_countTb4b4b4) Tff7b72}} /
Tff7b72{{ Te6edf3formatNumberTb4b4b4(Te6edf3databaseHealthTb4b4b4.Te6edf3freelist_pagesTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.free_space_estimate"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3databaseHealthTb4b4b4.Te6edf3estimated_free_bytesTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3healthLoadingTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500 dark:text-gray-400"Tb4b4b4>
Health data will appear after the first refresh.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3databaseRecoveryActionsTb4b4b4.Te6edf3lengthTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-gray-400 border-t border-gray-200 dark:border-gray-800 pt-3"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-800 dark:text-gray-200 mb-1"Tb4b4b4>Last recovery stepsTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72ul Te6edf3classTff7b72=Ta5d6ff"list-disc list-inside space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72li Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3actionTb4b4b4, Te6edf3indexTb4b4b4) Tff7b72in Te6edf3databaseRecoveryActionsTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3indexTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-medium text-gray-700 dark:text-gray-300"Tb4b4b4>Tff7b72{{ Te6edf3actionTb4b4b4.Te6edf3step Tff7b72}}:Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"ml-1"Tb4b4b4>Tff7b72{{ Te6edf3formatRecoveryResultTb4b4b4(Te6edf3actionTb4b4b4.Te6edf3resultTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"border-t border-gray-200 dark:border-gray-800 pt-3 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-white"Tb4b4b4>BackupsTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-3 py-2 text-xs"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3backupInProgressTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3backupDatabaseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-save" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Download Backup
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3backupMessageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-600"Tb4b4b4>Tff7b72{{ Te6edf3backupMessage Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3backupErrorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-red-600"Tb4b4b4>Tff7b72{{ Te6edf3backupError Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-white pt-2"Tb4b4b4>RestoreTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-2 sm:flex-row sm:items-center sm:gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72input Te6edf3typeTff7b72=Ta5d6ff"file" Te6edf3acceptTff7b72=Ta5d6ff".zip,.db" Te6edf3classTff7b72=Ta5d6ff"file-input" Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onRestoreFileChangeTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip px-3 py-2 text-xs"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3restoreInProgressTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3restoreDatabaseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"database-sync" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Restore
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3restoreFileNameTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-gray-400"Tb4b4b4>
Selected: Tff7b72{{ Te6edf3restoreFileName Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3restoreMessageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-600"Tb4b4b4>Tff7b72{{ Te6edf3restoreMessage Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3restoreErrorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-red-600"Tb4b4b4>Tff7b72{{ Te6edf3restoreError Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"border-t border-gray-200 dark:border-gray-800 pt-3 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-white"Tb4b4b4>Identity Backup & RestoreTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-red-600"Tb4b4b4>
Never share this identity. It grants full control. Clear your clipboard after copying.
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-3 py-2 text-xs"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3downloadIdentityFileTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-save" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Download Identity File
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip px-3 py-2 text-xs"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyIdentityBase32Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Copy Base32 Identity
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3identityBackupMessageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-600"Tb4b4b4>
Tff7b72{{ Te6edf3identityBackupMessage Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3identityBackupErrorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-red-600"Tb4b4b4>Tff7b72{{ Te6edf3identityBackupError Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3identityBase32MessageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-600"Tb4b4b4>
Tff7b72{{ Te6edf3identityBase32Message Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3identityBase32ErrorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-red-600"Tb4b4b4>Tff7b72{{ Te6edf3identityBase32Error Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-white pt-2"Tb4b4b4>Restore from fileTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-2 sm:flex-row sm:items-center sm:gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3typeTff7b72=Ta5d6ff"file"
Te6edf3acceptTff7b72=Ta5d6ff".identity,.bin,.key"
Te6edf3classTff7b72=Ta5d6ff"file-input"
Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onIdentityRestoreFileChangeTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip px-3 py-2 text-xs"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3identityRestoreInProgressTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3restoreIdentityFileTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"database-sync" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Restore Identity
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3identityRestoreFileNameTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-gray-400"Tb4b4b4>
Selected: Tff7b72{{ Te6edf3identityRestoreFileName Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold text-gray-900 dark:text-white pt-2"Tb4b4b4>Restore from base32Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72textarea Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3identityRestoreBase32Ta5d6ff" Te6edf3rowsTff7b72=Ta5d6ff"3" Te6edf3classTff7b72=Ta5d6ff"input-field"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72textareaTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"primary-chip px-3 py-2 text-xs"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3identityRestoreInProgressTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3restoreIdentityBase32Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"database-sync" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Restore Identity
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3identityRestoreMessageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-600"Tb4b4b4>
Tff7b72{{ Te6edf3identityRestoreMessage Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3identityRestoreErrorTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-xs text-red-600"Tb4b4b4>
Tff7b72{{ Te6edf3identityRestoreError Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid gap-4 lg:grid-cols-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3appInfoTff7b72?Tb4b4b4.Te6edf3memory_usageTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72header Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chip" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5 text-blue-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.system_resources"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-500 flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"w-2 h-2 rounded-full bg-emerald-500 animate-pulse"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.live"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72headerTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-row"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.memory_rss"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3memory_usageTb4b4b4.Te6edf3rssTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.virtual_memory"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3memory_usageTb4b4b4.Te6edf3vmsTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3appInfoTff7b72?Tb4b4b4.Te6edf3network_statsTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72header Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"access-point-network" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5 text-purple-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.network_stats"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-500 flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"w-2 h-2 rounded-full bg-emerald-500 animate-pulse"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.live"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72headerTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-row"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.sent"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3network_statsTb4b4b4.Te6edf3bytes_sentTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.received"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3network_statsTb4b4b4.Te6edf3bytes_recvTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-row"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.packets_sent"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3formatNumberTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3network_statsTb4b4b4.Te6edf3packets_sentTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.packets_received"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3formatNumberTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3network_statsTb4b4b4.Te6edf3packets_recvTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3appInfoTff7b72?Tb4b4b4.Te6edf3reticulum_statsTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72header Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"diagram-projector" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5 text-indigo-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.reticulum_stats"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-500 flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"w-2 h-2 rounded-full bg-emerald-500 animate-pulse"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.live"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72headerTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-grid"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.total_paths"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>Tff7b72{{ Te6edf3formatNumberTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3reticulum_statsTb4b4b4.Te6edf3total_pathsTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.announces_per_second"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>
Tff7b72{{ Te6edf3formatNumberTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3reticulum_statsTb4b4b4.Te6edf3announces_per_secondTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.announces_per_minute"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>
Tff7b72{{ Te6edf3formatNumberTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3reticulum_statsTb4b4b4.Te6edf3announces_per_minuteTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.announces_per_hour"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>
Tff7b72{{ Te6edf3formatNumberTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3reticulum_statsTb4b4b4.Te6edf3announces_per_hourTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3appInfoTff7b72?Tb4b4b4.Te6edf3download_statsTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72header Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"download" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5 text-sky-500" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.download_activity"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-emerald-500 flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"w-2 h-2 rounded-full bg-emerald-500 animate-pulse"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.live"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72headerTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"metric-value"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3appInfoTb4b4b4.Te6edf3download_statsTb4b4b4.Te6edf3avg_download_speed_bps Tff7b72!== Tff7b72nullTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3formatBytesPerSecondTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3download_statsTb4b4b4.Te6edf3avg_download_speed_bpsTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-500"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.no_downloads_yet"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3appInfoTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.runtime_status"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72span Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3statusPillClassTb4b4b4(Tff7b72!Te6edf3appInfoTb4b4b4.Te6edf3is_connected_to_shared_instanceTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"server" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{
Te6edf3appInfoTb4b4b4.Te6edf3is_connected_to_shared_instance
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"about.shared_instance"Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"about.standalone_instance"Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3statusPillClassTb4b4b4(Te6edf3appInfoTb4b4b4.Te6edf3is_transport_enabledTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"transit-connection" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{
Te6edf3appInfoTb4b4b4.Te6edf3is_transport_enabled
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"about.transport_enabled"Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"about.transport_disabled"Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3configTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"glass-card space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold text-gray-900 dark:text-white"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.identity_addresses"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid gap-3 md:grid-cols-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"address-card"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"app.identity_hash"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"monospace-field break-all"Tb4b4b4>Tff7b72{{ Te6edf3configTb4b4b4.Te6edf3identity_hash Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip mt-3 text-xs"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyValueTb4b4b4(Te6edf3configTb4b4b4.Te6edf3identity_hashTb4b4b4, Te6edf3$tTb4b4b4(Ta5d6ff'app.identity_hash'Tb4b4b4)Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"app.copy"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"address-card"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"app.lxmf_address"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"monospace-field break-all"Tb4b4b4>Tff7b72{{ Te6edf3configTb4b4b4.Te6edf3lxmf_address_hash Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"secondary-chip mt-3 text-xs"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyValueTb4b4b4(Te6edf3configTb4b4b4.Te6edf3lxmf_address_hashTb4b4b4, Te6edf3$tTb4b4b4(Ta5d6ff'app.lxmf_address'Tb4b4b4)Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"account-network" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"app.copy"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"address-card"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"app.propagation_node"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"monospace-field break-all"Tb4b4b4>
Tff7b72{{ Te6edf3configTb4b4b4.Te6edf3lxmf_local_propagation_node_address_hash Tff7b72|| Ta5d6ff"—" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"address-card"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"glass-label"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"about.telephone_address"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"monospace-field break-all"Tb4b4b4>Tff7b72{{ Te6edf3configTb4b4b4.Te6edf3telephone_address_hash Tff7b72|| Ta5d6ff"—" Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Te6edf3ElectronUtils Tff7b72from Ta5d6ff"../../js/ElectronUtils"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"AboutPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3appInfoTff7b72: Tff7b72nullTb4b4b4,
Te6edf3configTff7b72: Tff7b72nullTb4b4b4,
Te6edf3updateIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3healthIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3databaseHealthTff7b72: Tff7b72nullTb4b4b4,
Te6edf3databaseRecoveryActionsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3databaseActionMessageTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3databaseActionErrorTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3databaseActionInProgressTff7b72: Tff7b72falseTb4b4b4,
Te6edf3healthLoadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3backupInProgressTff7b72: Tff7b72falseTb4b4b4,
Te6edf3backupMessageTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3backupErrorTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3restoreInProgressTff7b72: Tff7b72falseTb4b4b4,
Te6edf3restoreMessageTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3restoreErrorTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3restoreFileNameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3restoreFileTff7b72: Tff7b72nullTb4b4b4,
Te6edf3identityBackupMessageTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3identityBackupErrorTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3identityBase32Tff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3identityBase32MessageTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3identityBase32ErrorTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3identityRestoreInProgressTff7b72: Tff7b72falseTb4b4b4,
Te6edf3identityRestoreMessageTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3identityRestoreErrorTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3identityRestoreFileNameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3identityRestoreFileTff7b72: Tff7b72nullTb4b4b4,
Te6edf3identityRestoreBase32Tff7b72: Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3isElectronTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3ElectronUtilsTb4b4b4.Te6edf3isElectronTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getAppInfoTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3getConfigTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3getDatabaseHealthTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Update stats every 5 seconds
Tff7b72thisTb4b4b4.Te6edf3updateInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getAppInfoTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff5000Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3healthInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3getDatabaseHealthTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff30000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3updateIntervalTb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3updateIntervalTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3healthIntervalTb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3healthIntervalTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3getAppInfoTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/app/info"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3appInfo Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3app_infoTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// do nothing if failed to load app info
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getDatabaseHealthTb4b4b4(Te6edf3showMessage Tff7b72= Tff7b72falseTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3healthLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/database/health"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3databaseHealth Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3databaseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3showMessageTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3databaseActionMessage Tff7b72= Ta5d6ff"Database health refreshed"Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3databaseActionError Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3databaseActionError Tff7b72= Ta5d6ff"Failed to load database health"Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3healthLoading Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3vacuumDatabaseTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3databaseActionInProgressTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3databaseActionInProgress Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3databaseActionMessage Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3databaseActionError Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3databaseRecoveryActions Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/database/vacuum"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3databaseTff7b72?Tb4b4b4.Te6edf3healthTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3databaseHealth Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3databaseTb4b4b4.Te6edf3healthTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3databaseActionMessage Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff"Database vacuum completed"Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3databaseActionError Tff7b72= Ta5d6ff"Vacuum failed"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3databaseActionInProgress Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3backupDatabaseTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3backupInProgressTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3backupInProgress Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3backupMessage Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3backupError Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/database/backup/download"Tb4b4b4, Tb4b4b4{
Te6edf3responseTypeTff7b72: Ta5d6ff"blob"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3blob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4]Tb4b4b4, Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"application/zip" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Tffa657windowTb4b4b4.Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3link Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"a"Tb4b4b4)Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3href Tff7b72= Te6edf3urlTb4b4b4;
Tff7b72const Te6edf3filename Tff7b72=
Te6edf3responseTb4b4b4.Te6edf3headersTb4b4b4[Ta5d6ff"content-disposition"Tb4b4b4]Tff7b72?Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"filename="Tb4b4b4)Tff7b72?Tb4b4b4.Tb4b4b4[T79c0ff1Tb4b4b4]Tff7b72?Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/"/gTb4b4b4, Ta5d6ff""Tb4b4b4) Tff7b72||
Ta5d6ff"meshchatx-backup.zip"Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"download"Tb4b4b4, Te6edf3filenameTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3linkTb4b4b4)Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3removeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3backupMessage Tff7b72= Ta5d6ff"Backup downloaded"Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getDatabaseHealthTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3backupError Tff7b72= Ta5d6ff"Backup failed"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3backupInProgress Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3restoreDatabaseTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3restoreInProgressTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3restoreFileTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3restoreError Tff7b72= Ta5d6ff"Select a backup file to restore."Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3restoreInProgress Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3restoreMessage Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3restoreError Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3formData Tff7b72= Tff7b72new Te6edf3FormDataTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3formDataTb4b4b4.Te6edf3appendTb4b4b4(Ta5d6ff"file"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3restoreFileTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/database/restore"Tb4b4b4, Te6edf3formDataTb4b4b4, Tb4b4b4{
Te6edf3headersTff7b72: Tb4b4b4{ Ta5d6ff"Content-Type"Tff7b72: Ta5d6ff"multipart/form-data" Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3restoreMessage Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff"Database restored"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3databaseHealth Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3databaseTff7b72?Tb4b4b4.Te6edf3health Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3databaseHealthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3databaseRecoveryActions Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3databaseTff7b72?Tb4b4b4.Te6edf3actions Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3databaseRecoveryActionsTb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getDatabaseHealthTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3restoreError Tff7b72= Ta5d6ff"Restore failed"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3restoreInProgress Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3recoverDatabaseTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3databaseActionInProgressTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3databaseActionInProgress Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3databaseActionMessage Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3databaseActionError Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/database/recover"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3databaseTff7b72?Tb4b4b4.Te6edf3healthTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3databaseHealth Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3databaseTb4b4b4.Te6edf3healthTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3databaseRecoveryActions Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3databaseTff7b72?Tb4b4b4.Te6edf3actions Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3databaseActionMessage Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff"Database recovery completed"Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3databaseActionError Tff7b72= Ta5d6ff"Recovery failed"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3databaseActionInProgress Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getConfigTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/config"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3config Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3configTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// do nothing if failed to load config
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyValueTb4b4b4(Te6edf3valueTb4b4b4, Te6edf3labelTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3valueTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff`Tffd700${Te6edf3labelTffd700}Ta5d6ff copied to clipboardTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Ta5d6ffFailed to copy Tffd700${Te6edf3labelTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3relaunchTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3ElectronUtilsTb4b4b4.Te6edf3relaunchTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3showReticulumConfigFileTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3reticulumConfigPath Tff7b72= Tff7b72thisTb4b4b4.Te6edf3appInfoTb4b4b4.Te6edf3reticulum_config_pathTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3reticulumConfigPathTb4b4b4) Tb4b4b4{
Te6edf3ElectronUtilsTb4b4b4.Te6edf3showPathInFolderTb4b4b4(Te6edf3reticulumConfigPathTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3showDatabaseFileTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3databasePath Tff7b72= Tff7b72thisTb4b4b4.Te6edf3appInfoTb4b4b4.Te6edf3database_pathTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3databasePathTb4b4b4) Tb4b4b4{
Te6edf3ElectronUtilsTb4b4b4.Te6edf3showPathInFolderTb4b4b4(Te6edf3databasePathTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatBytesTff7b72: Tff7b72function Tb4b4b4(Te6edf3bytesTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3bytesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatNumberTff7b72: Tff7b72function Tb4b4b4(Te6edf3numTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatNumberTb4b4b4(Te6edf3numTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatBytesPerSecondTff7b72: Tff7b72function Tb4b4b4(Te6edf3bytesPerSecondTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatBytesPerSecondTb4b4b4(Te6edf3bytesPerSecondTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onRestoreFileChangeTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3files Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3files Tff7b72&& Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3restoreFile Tff7b72= Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3restoreFileName Tff7b72= Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3nameTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3restoreError Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3restoreMessage Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3downloadIdentityFileTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityBackupMessage Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityBackupError Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/identity/backup/download"Tb4b4b4, Tb4b4b4{
Te6edf3responseTypeTff7b72: Ta5d6ff"blob"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3blob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4]Tb4b4b4, Tb4b4b4{ Te6edf3typeTff7b72: Ta5d6ff"application/octet-stream" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Tffa657windowTb4b4b4.Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3link Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"a"Tb4b4b4)Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3href Tff7b72= Te6edf3urlTb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3setAttributeTb4b4b4(Ta5d6ff"download"Tb4b4b4, Ta5d6ff"identity"Tb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3appendChildTb4b4b4(Te6edf3linkTb4b4b4)Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3removeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityBackupMessage Tff7b72= Ta5d6ff"Identity downloaded. Keep it secret."Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityBackupError Tff7b72= Ta5d6ff"Failed to download identity"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyIdentityBase32Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityBase32Message Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityBase32Error Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/identity/backup/base32"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityBase32 Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3identity_base32 Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3identityBase32Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityBase32Error Tff7b72= Ta5d6ff"No identity available"Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3identityBase32Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityBase32Message Tff7b72= Ta5d6ff"Identity copied. Clear your clipboard after use."Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityBase32Error Tff7b72= Ta5d6ff"Failed to copy identity"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onIdentityRestoreFileChangeTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3files Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3files Tff7b72&& Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityRestoreFile Tff7b72= Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityRestoreFileName Tff7b72= Te6edf3filesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3nameTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityRestoreError Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityRestoreMessage Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3restoreIdentityFileTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3identityRestoreInProgressTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3identityRestoreFileTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityRestoreError Tff7b72= Ta5d6ff"Select an identity file to restore."Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3identityRestoreInProgress Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityRestoreMessage Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityRestoreError Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3formData Tff7b72= Tff7b72new Te6edf3FormDataTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3formDataTb4b4b4.Te6edf3appendTb4b4b4(Ta5d6ff"file"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3identityRestoreFileTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/identity/restore"Tb4b4b4, Te6edf3formDataTb4b4b4, Tb4b4b4{
Te6edf3headersTff7b72: Tb4b4b4{ Ta5d6ff"Content-Type"Tff7b72: Ta5d6ff"multipart/form-data" Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityRestoreMessage Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff"Identity restored. Restart app."Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityRestoreError Tff7b72= Ta5d6ff"Identity restore failed"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityRestoreInProgress Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3restoreIdentityBase32Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3identityRestoreInProgressTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3identityRestoreBase32Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityRestoreError Tff7b72= Ta5d6ff"Provide a base32 key to restore."Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3identityRestoreInProgress Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityRestoreMessage Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityRestoreError Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3axiosTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/identity/restore"Tb4b4b4, Tb4b4b4{
Te6edf3base32Tff7b72: Tff7b72thisTb4b4b4.Te6edf3identityRestoreBase32Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3identityRestoreMessage Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3message Tff7b72|| Ta5d6ff"Identity restored. Restart app."Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityRestoreError Tff7b72= Ta5d6ff"Identity restore failed"Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3identityRestoreInProgress Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatRecoveryResultTb4b4b4(Te6edf3valueTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3value Tff7b72=== Tff7b72null Tff7b72|| Te6edf3value Tff7b72=== Tff7b72undefinedTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"—"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3valueTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3valueTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff", "Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3valueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3statusPillClassTb4b4b4(Te6edf3isGoodTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3isGood
Tff7b72? Ta5d6ff"inline-flex items-center gap-1 rounded-full bg-emerald-100 text-emerald-700 px-3 py-1 text-xs font-semibold"
Tff7b72: Ta5d6ff"inline-flex items-center gap-1 rounded-full bg-orange-100 text-orange-700 px-3 py-1 text-xs font-semibold"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────